package Q17_17_Multi_Search;
import java.util.ArrayList;
import java.util.HashMap;
public class TrieNode {
private HashMap<Character, TrieNode> children;
private ArrayList<Integer> indexes;
public TrieNode() {
children = new HashMap<Character, TrieNode>();
indexes = new ArrayList<Integer>();
}
public void insertString(String s, int index) {
if (s == null) return;
indexes.add(index);
if (s.length() > 0) {
char value = s.charAt(0);
TrieNode child = null;
if (children.containsKey(value)) {
child = children.get(value);
} else {
child = new TrieNode();
children.put(value, child);
}
String remainder = s.substring(1);
child.insertString(remainder, index + 1);
} else {
children.put('\0', null);
}
}
public ArrayList<Integer> search(String s) {
if (s == null || s.length() == 0) {
return indexes;
} else {
char first = s.charAt(0);
if (children.containsKey(first)) {
String remainder = s.substring(1);
return children.get(first).search(remainder);
}
}
return null;
}
public boolean terminates() {
return children.containsKey('\0');
}
public TrieNode getChild(char c) {
return children.get(c);
}
}